{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 15,
   "source": [
    "def f_fit(t, a0, a1, a2):\n",
    "    return a0 + a1 * t ** 2 + a2 * t ** 3 + t\n",
    "\n",
    "def f(t):\n",
    "    return 3 * t ** 2 / (1 + t ** 3)"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "source": [
    "import numpy as np\n",
    "import scipy.optimize as opt\n",
    "import matplotlib.pyplot as plt"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "source": [
    "t = np.linspace(0.1, 1, 10)\n",
    "y = f(t)\n",
    "\n",
    "popt, pcov = opt.curve_fit(f_fit, t, y)\n",
    "print(popt)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[-0.14426248  1.96605844 -1.30214419]\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "source": [
    "xdata = np.linspace(0, 1, 100)\n",
    "\n",
    "ydata = f(xdata)\n",
    "ydata_fit = f_fit(xdata, *popt)"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "source": [
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(xdata, ydata, label=\"origin curve\")\n",
    "plt.plot(xdata, ydata_fit, label=\"fit curve\")\n",
    "plt.legend()\n",
    "plt.savefig(\"./q5_figure.png\", dpi=300)"
   ],
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "source": [
    "# Self writting calculation"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "source": [
    "def x(n):\n",
    "    return np.sin(0.2 * n * np.pi)\n",
    "\n",
    "def phi(n, k, N):\n",
    "    return np.exp(2j * np.pi * k * n / N) / N\n",
    "\n",
    "N = 31\n",
    "H = np.array([[phi(n, k, N) for k in range(N)] for n in range(N)])\n",
    "print(H)\n",
    "# print(H_star)\n",
    "# print(H_star == H)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[[ 0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j        ]\n",
      " [ 0.03225806+0.j          0.03159774+0.0064935j   0.0296438 +0.01272116j\n",
      "   0.02647624+0.01842801j  0.02222474+0.02338041j  0.01706336+0.02737562j\n",
      "   0.0112034 +0.03025007j  0.00488477+0.03188607j -0.00163384+0.03221666j\n",
      "  -0.00808557+0.03122829j -0.01420626+0.02896144j -0.01974535+0.02550889j\n",
      "  -0.02447607+0.02101202j -0.02820473+0.0156549j  -0.03077869+0.00965687j\n",
      "  -0.03209256+0.00326349j -0.03209256-0.00326349j -0.03077869-0.00965687j\n",
      "  -0.02820473-0.0156549j  -0.02447607-0.02101202j -0.01974535-0.02550889j\n",
      "  -0.01420626-0.02896144j -0.00808557-0.03122829j -0.00163384-0.03221666j\n",
      "   0.00488477-0.03188607j  0.0112034 -0.03025007j  0.01706336-0.02737562j\n",
      "   0.02222474-0.02338041j  0.02647624-0.01842801j  0.0296438 -0.01272116j\n",
      "   0.03159774-0.0064935j ]\n",
      " [ 0.03225806+0.j          0.0296438 +0.01272116j  0.02222474+0.02338041j\n",
      "   0.0112034 +0.03025007j -0.00163384+0.03221666j -0.01420626+0.02896144j\n",
      "  -0.02447607+0.02101202j -0.03077869+0.00965687j -0.03209256-0.00326349j\n",
      "  -0.02820473-0.0156549j  -0.01974535-0.02550889j -0.00808557-0.03122829j\n",
      "   0.00488477-0.03188607j  0.01706336-0.02737562j  0.02647624-0.01842801j\n",
      "   0.03159774-0.0064935j   0.03159774+0.0064935j   0.02647624+0.01842801j\n",
      "   0.01706336+0.02737562j  0.00488477+0.03188607j -0.00808557+0.03122829j\n",
      "  -0.01974535+0.02550889j -0.02820473+0.0156549j  -0.03209256+0.00326349j\n",
      "  -0.03077869-0.00965687j -0.02447607-0.02101202j -0.01420626-0.02896144j\n",
      "  -0.00163384-0.03221666j  0.0112034 -0.03025007j  0.02222474-0.02338041j\n",
      "   0.0296438 -0.01272116j]\n",
      " [ 0.03225806+0.j          0.02647624+0.01842801j  0.0112034 +0.03025007j\n",
      "  -0.00808557+0.03122829j -0.02447607+0.02101202j -0.03209256+0.00326349j\n",
      "  -0.02820473-0.0156549j  -0.01420626-0.02896144j  0.00488477-0.03188607j\n",
      "   0.02222474-0.02338041j  0.03159774-0.0064935j   0.0296438 +0.01272116j\n",
      "   0.01706336+0.02737562j -0.00163384+0.03221666j -0.01974535+0.02550889j\n",
      "  -0.03077869+0.00965687j -0.03077869-0.00965687j -0.01974535-0.02550889j\n",
      "  -0.00163384-0.03221666j  0.01706336-0.02737562j  0.0296438 -0.01272116j\n",
      "   0.03159774+0.0064935j   0.02222474+0.02338041j  0.00488477+0.03188607j\n",
      "  -0.01420626+0.02896144j -0.02820473+0.0156549j  -0.03209256-0.00326349j\n",
      "  -0.02447607-0.02101202j -0.00808557-0.03122829j  0.0112034 -0.03025007j\n",
      "   0.02647624-0.01842801j]\n",
      " [ 0.03225806+0.j          0.02222474+0.02338041j -0.00163384+0.03221666j\n",
      "  -0.02447607+0.02101202j -0.03209256-0.00326349j -0.01974535-0.02550889j\n",
      "   0.00488477-0.03188607j  0.02647624-0.01842801j  0.03159774+0.0064935j\n",
      "   0.01706336+0.02737562j -0.00808557+0.03122829j -0.02820473+0.0156549j\n",
      "  -0.03077869-0.00965687j -0.01420626-0.02896144j  0.0112034 -0.03025007j\n",
      "   0.0296438 -0.01272116j  0.0296438 +0.01272116j  0.0112034 +0.03025007j\n",
      "  -0.01420626+0.02896144j -0.03077869+0.00965687j -0.02820473-0.0156549j\n",
      "  -0.00808557-0.03122829j  0.01706336-0.02737562j  0.03159774-0.0064935j\n",
      "   0.02647624+0.01842801j  0.00488477+0.03188607j -0.01974535+0.02550889j\n",
      "  -0.03209256+0.00326349j -0.02447607-0.02101202j -0.00163384-0.03221666j\n",
      "   0.02222474-0.02338041j]\n",
      " [ 0.03225806+0.j          0.01706336+0.02737562j -0.01420626+0.02896144j\n",
      "  -0.03209256+0.00326349j -0.01974535-0.02550889j  0.0112034 -0.03025007j\n",
      "   0.03159774-0.0064935j   0.02222474+0.02338041j -0.00808557+0.03122829j\n",
      "  -0.03077869+0.00965687j -0.02447607-0.02101202j  0.00488477-0.03188607j\n",
      "   0.0296438 -0.01272116j  0.02647624+0.01842801j -0.00163384+0.03221666j\n",
      "  -0.02820473+0.0156549j  -0.02820473-0.0156549j  -0.00163384-0.03221666j\n",
      "   0.02647624-0.01842801j  0.0296438 +0.01272116j  0.00488477+0.03188607j\n",
      "  -0.02447607+0.02101202j -0.03077869-0.00965687j -0.00808557-0.03122829j\n",
      "   0.02222474-0.02338041j  0.03159774+0.0064935j   0.0112034 +0.03025007j\n",
      "  -0.01974535+0.02550889j -0.03209256-0.00326349j -0.01420626-0.02896144j\n",
      "   0.01706336-0.02737562j]\n",
      " [ 0.03225806+0.j          0.0112034 +0.03025007j -0.02447607+0.02101202j\n",
      "  -0.02820473-0.0156549j   0.00488477-0.03188607j  0.03159774-0.0064935j\n",
      "   0.01706336+0.02737562j -0.01974535+0.02550889j -0.03077869-0.00965687j\n",
      "  -0.00163384-0.03221666j  0.0296438 -0.01272116j  0.02222474+0.02338041j\n",
      "  -0.01420626+0.02896144j -0.03209256-0.00326349j -0.00808557-0.03122829j\n",
      "   0.02647624-0.01842801j  0.02647624+0.01842801j -0.00808557+0.03122829j\n",
      "  -0.03209256+0.00326349j -0.01420626-0.02896144j  0.02222474-0.02338041j\n",
      "   0.0296438 +0.01272116j -0.00163384+0.03221666j -0.03077869+0.00965687j\n",
      "  -0.01974535-0.02550889j  0.01706336-0.02737562j  0.03159774+0.0064935j\n",
      "   0.00488477+0.03188607j -0.02820473+0.0156549j  -0.02447607-0.02101202j\n",
      "   0.0112034 -0.03025007j]\n",
      " [ 0.03225806+0.j          0.00488477+0.03188607j -0.03077869+0.00965687j\n",
      "  -0.01420626-0.02896144j  0.02647624-0.01842801j  0.02222474+0.02338041j\n",
      "  -0.01974535+0.02550889j -0.02820473-0.0156549j   0.0112034 -0.03025007j\n",
      "   0.03159774+0.0064935j  -0.00163384+0.03221666j -0.03209256+0.00326349j\n",
      "  -0.00808557-0.03122829j  0.0296438 -0.01272116j  0.01706336+0.02737562j\n",
      "  -0.02447607+0.02101202j -0.02447607-0.02101202j  0.01706336-0.02737562j\n",
      "   0.0296438 +0.01272116j -0.00808557+0.03122829j -0.03209256-0.00326349j\n",
      "  -0.00163384-0.03221666j  0.03159774-0.0064935j   0.0112034 +0.03025007j\n",
      "  -0.02820473+0.0156549j  -0.01974535-0.02550889j  0.02222474-0.02338041j\n",
      "   0.02647624+0.01842801j -0.01420626+0.02896144j -0.03077869-0.00965687j\n",
      "   0.00488477-0.03188607j]\n",
      " [ 0.03225806+0.j         -0.00163384+0.03221666j -0.03209256-0.00326349j\n",
      "   0.00488477-0.03188607j  0.03159774+0.0064935j  -0.00808557+0.03122829j\n",
      "  -0.03077869-0.00965687j  0.0112034 -0.03025007j  0.0296438 +0.01272116j\n",
      "  -0.01420626+0.02896144j -0.02820473-0.0156549j   0.01706336-0.02737562j\n",
      "   0.02647624+0.01842801j -0.01974535+0.02550889j -0.02447607-0.02101202j\n",
      "   0.02222474-0.02338041j  0.02222474+0.02338041j -0.02447607+0.02101202j\n",
      "  -0.01974535-0.02550889j  0.02647624-0.01842801j  0.01706336+0.02737562j\n",
      "  -0.02820473+0.0156549j  -0.01420626-0.02896144j  0.0296438 -0.01272116j\n",
      "   0.0112034 +0.03025007j -0.03077869+0.00965687j -0.00808557-0.03122829j\n",
      "   0.03159774-0.0064935j   0.00488477+0.03188607j -0.03209256+0.00326349j\n",
      "  -0.00163384-0.03221666j]\n",
      " [ 0.03225806+0.j         -0.00808557+0.03122829j -0.02820473-0.0156549j\n",
      "   0.02222474-0.02338041j  0.01706336+0.02737562j -0.03077869+0.00965687j\n",
      "  -0.00163384-0.03221666j  0.03159774+0.0064935j  -0.01420626+0.02896144j\n",
      "  -0.02447607-0.02101202j  0.02647624-0.01842801j  0.0112034 +0.03025007j\n",
      "  -0.03209256+0.00326349j  0.00488477-0.03188607j  0.0296438 +0.01272116j\n",
      "  -0.01974535+0.02550889j -0.01974535-0.02550889j  0.0296438 -0.01272116j\n",
      "   0.00488477+0.03188607j -0.03209256-0.00326349j  0.0112034 -0.03025007j\n",
      "   0.02647624+0.01842801j -0.02447607+0.02101202j -0.01420626-0.02896144j\n",
      "   0.03159774-0.0064935j  -0.00163384+0.03221666j -0.03077869-0.00965687j\n",
      "   0.01706336-0.02737562j  0.02222474+0.02338041j -0.02820473+0.0156549j\n",
      "  -0.00808557-0.03122829j]\n",
      " [ 0.03225806+0.j         -0.01420626+0.02896144j -0.01974535-0.02550889j\n",
      "   0.03159774-0.0064935j  -0.00808557+0.03122829j -0.02447607-0.02101202j\n",
      "   0.0296438 -0.01272116j -0.00163384+0.03221666j -0.02820473-0.0156549j\n",
      "   0.02647624-0.01842801j  0.00488477+0.03188607j -0.03077869-0.00965687j\n",
      "   0.02222474-0.02338041j  0.0112034 +0.03025007j -0.03209256-0.00326349j\n",
      "   0.01706336-0.02737562j  0.01706336+0.02737562j -0.03209256+0.00326349j\n",
      "   0.0112034 -0.03025007j  0.02222474+0.02338041j -0.03077869+0.00965687j\n",
      "   0.00488477-0.03188607j  0.02647624+0.01842801j -0.02820473+0.0156549j\n",
      "  -0.00163384-0.03221666j  0.0296438 +0.01272116j -0.02447607+0.02101202j\n",
      "  -0.00808557-0.03122829j  0.03159774+0.0064935j  -0.01974535+0.02550889j\n",
      "  -0.01420626-0.02896144j]\n",
      " [ 0.03225806+0.j         -0.01974535+0.02550889j -0.00808557-0.03122829j\n",
      "   0.0296438 +0.01272116j -0.02820473+0.0156549j   0.00488477-0.03188607j\n",
      "   0.02222474+0.02338041j -0.03209256+0.00326349j  0.01706336-0.02737562j\n",
      "   0.0112034 +0.03025007j -0.03077869-0.00965687j  0.02647624-0.01842801j\n",
      "  -0.00163384+0.03221666j -0.02447607-0.02101202j  0.03159774-0.0064935j\n",
      "  -0.01420626+0.02896144j -0.01420626-0.02896144j  0.03159774+0.0064935j\n",
      "  -0.02447607+0.02101202j -0.00163384-0.03221666j  0.02647624+0.01842801j\n",
      "  -0.03077869+0.00965687j  0.0112034 -0.03025007j  0.01706336+0.02737562j\n",
      "  -0.03209256-0.00326349j  0.02222474-0.02338041j  0.00488477+0.03188607j\n",
      "  -0.02820473-0.0156549j   0.0296438 -0.01272116j -0.00808557+0.03122829j\n",
      "  -0.01974535-0.02550889j]\n",
      " [ 0.03225806+0.j         -0.02447607+0.02101202j  0.00488477-0.03188607j\n",
      "   0.01706336+0.02737562j -0.03077869-0.00965687j  0.0296438 -0.01272116j\n",
      "  -0.01420626+0.02896144j -0.00808557-0.03122829j  0.02647624+0.01842801j\n",
      "  -0.03209256+0.00326349j  0.02222474-0.02338041j -0.00163384+0.03221666j\n",
      "  -0.01974535-0.02550889j  0.03159774+0.0064935j  -0.02820473+0.0156549j\n",
      "   0.0112034 -0.03025007j  0.0112034 +0.03025007j -0.02820473-0.0156549j\n",
      "   0.03159774-0.0064935j  -0.01974535+0.02550889j -0.00163384-0.03221666j\n",
      "   0.02222474+0.02338041j -0.03209256-0.00326349j  0.02647624-0.01842801j\n",
      "  -0.00808557+0.03122829j -0.01420626-0.02896144j  0.0296438 +0.01272116j\n",
      "  -0.03077869+0.00965687j  0.01706336-0.02737562j  0.00488477+0.03188607j\n",
      "  -0.02447607-0.02101202j]\n",
      " [ 0.03225806+0.j         -0.02820473+0.0156549j   0.01706336-0.02737562j\n",
      "  -0.00163384+0.03221666j -0.01420626-0.02896144j  0.02647624+0.01842801j\n",
      "  -0.03209256-0.00326349j  0.0296438 -0.01272116j -0.01974535+0.02550889j\n",
      "   0.00488477-0.03188607j  0.0112034 +0.03025007j -0.02447607-0.02101202j\n",
      "   0.03159774+0.0064935j  -0.03077869+0.00965687j  0.02222474-0.02338041j\n",
      "  -0.00808557+0.03122829j -0.00808557-0.03122829j  0.02222474+0.02338041j\n",
      "  -0.03077869-0.00965687j  0.03159774-0.0064935j  -0.02447607+0.02101202j\n",
      "   0.0112034 -0.03025007j  0.00488477+0.03188607j -0.01974535-0.02550889j\n",
      "   0.0296438 +0.01272116j -0.03209256+0.00326349j  0.02647624-0.01842801j\n",
      "  -0.01420626+0.02896144j -0.00163384-0.03221666j  0.01706336+0.02737562j\n",
      "  -0.02820473-0.0156549j ]\n",
      " [ 0.03225806+0.j         -0.03077869+0.00965687j  0.02647624-0.01842801j\n",
      "  -0.01974535+0.02550889j  0.0112034 -0.03025007j -0.00163384+0.03221666j\n",
      "  -0.00808557-0.03122829j  0.01706336+0.02737562j -0.02447607-0.02101202j\n",
      "   0.0296438 +0.01272116j -0.03209256-0.00326349j  0.03159774-0.0064935j\n",
      "  -0.02820473+0.0156549j   0.02222474-0.02338041j -0.01420626+0.02896144j\n",
      "   0.00488477-0.03188607j  0.00488477+0.03188607j -0.01420626-0.02896144j\n",
      "   0.02222474+0.02338041j -0.02820473-0.0156549j   0.03159774+0.0064935j\n",
      "  -0.03209256+0.00326349j  0.0296438 -0.01272116j -0.02447607+0.02101202j\n",
      "   0.01706336-0.02737562j -0.00808557+0.03122829j -0.00163384-0.03221666j\n",
      "   0.0112034 +0.03025007j -0.01974535-0.02550889j  0.02647624+0.01842801j\n",
      "  -0.03077869-0.00965687j]\n",
      " [ 0.03225806+0.j         -0.03209256+0.00326349j  0.03159774-0.0064935j\n",
      "  -0.03077869+0.00965687j  0.0296438 -0.01272116j -0.02820473+0.0156549j\n",
      "   0.02647624-0.01842801j -0.02447607+0.02101202j  0.02222474-0.02338041j\n",
      "  -0.01974535+0.02550889j  0.01706336-0.02737562j -0.01420626+0.02896144j\n",
      "   0.0112034 -0.03025007j -0.00808557+0.03122829j  0.00488477-0.03188607j\n",
      "  -0.00163384+0.03221666j -0.00163384-0.03221666j  0.00488477+0.03188607j\n",
      "  -0.00808557-0.03122829j  0.0112034 +0.03025007j -0.01420626-0.02896144j\n",
      "   0.01706336+0.02737562j -0.01974535-0.02550889j  0.02222474+0.02338041j\n",
      "  -0.02447607-0.02101202j  0.02647624+0.01842801j -0.02820473-0.0156549j\n",
      "   0.0296438 +0.01272116j -0.03077869-0.00965687j  0.03159774+0.0064935j\n",
      "  -0.03209256-0.00326349j]\n",
      " [ 0.03225806+0.j         -0.03209256-0.00326349j  0.03159774+0.0064935j\n",
      "  -0.03077869-0.00965687j  0.0296438 +0.01272116j -0.02820473-0.0156549j\n",
      "   0.02647624+0.01842801j -0.02447607-0.02101202j  0.02222474+0.02338041j\n",
      "  -0.01974535-0.02550889j  0.01706336+0.02737562j -0.01420626-0.02896144j\n",
      "   0.0112034 +0.03025007j -0.00808557-0.03122829j  0.00488477+0.03188607j\n",
      "  -0.00163384-0.03221666j -0.00163384+0.03221666j  0.00488477-0.03188607j\n",
      "  -0.00808557+0.03122829j  0.0112034 -0.03025007j -0.01420626+0.02896144j\n",
      "   0.01706336-0.02737562j -0.01974535+0.02550889j  0.02222474-0.02338041j\n",
      "  -0.02447607+0.02101202j  0.02647624-0.01842801j -0.02820473+0.0156549j\n",
      "   0.0296438 -0.01272116j -0.03077869+0.00965687j  0.03159774-0.0064935j\n",
      "  -0.03209256+0.00326349j]\n",
      " [ 0.03225806+0.j         -0.03077869-0.00965687j  0.02647624+0.01842801j\n",
      "  -0.01974535-0.02550889j  0.0112034 +0.03025007j -0.00163384-0.03221666j\n",
      "  -0.00808557+0.03122829j  0.01706336-0.02737562j -0.02447607+0.02101202j\n",
      "   0.0296438 -0.01272116j -0.03209256+0.00326349j  0.03159774+0.0064935j\n",
      "  -0.02820473-0.0156549j   0.02222474+0.02338041j -0.01420626-0.02896144j\n",
      "   0.00488477+0.03188607j  0.00488477-0.03188607j -0.01420626+0.02896144j\n",
      "   0.02222474-0.02338041j -0.02820473+0.0156549j   0.03159774-0.0064935j\n",
      "  -0.03209256-0.00326349j  0.0296438 +0.01272116j -0.02447607-0.02101202j\n",
      "   0.01706336+0.02737562j -0.00808557-0.03122829j -0.00163384+0.03221666j\n",
      "   0.0112034 -0.03025007j -0.01974535+0.02550889j  0.02647624-0.01842801j\n",
      "  -0.03077869+0.00965687j]\n",
      " [ 0.03225806+0.j         -0.02820473-0.0156549j   0.01706336+0.02737562j\n",
      "  -0.00163384-0.03221666j -0.01420626+0.02896144j  0.02647624-0.01842801j\n",
      "  -0.03209256+0.00326349j  0.0296438 +0.01272116j -0.01974535-0.02550889j\n",
      "   0.00488477+0.03188607j  0.0112034 -0.03025007j -0.02447607+0.02101202j\n",
      "   0.03159774-0.0064935j  -0.03077869-0.00965687j  0.02222474+0.02338041j\n",
      "  -0.00808557-0.03122829j -0.00808557+0.03122829j  0.02222474-0.02338041j\n",
      "  -0.03077869+0.00965687j  0.03159774+0.0064935j  -0.02447607-0.02101202j\n",
      "   0.0112034 +0.03025007j  0.00488477-0.03188607j -0.01974535+0.02550889j\n",
      "   0.0296438 -0.01272116j -0.03209256-0.00326349j  0.02647624+0.01842801j\n",
      "  -0.01420626-0.02896144j -0.00163384+0.03221666j  0.01706336-0.02737562j\n",
      "  -0.02820473+0.0156549j ]\n",
      " [ 0.03225806+0.j         -0.02447607-0.02101202j  0.00488477+0.03188607j\n",
      "   0.01706336-0.02737562j -0.03077869+0.00965687j  0.0296438 +0.01272116j\n",
      "  -0.01420626-0.02896144j -0.00808557+0.03122829j  0.02647624-0.01842801j\n",
      "  -0.03209256-0.00326349j  0.02222474+0.02338041j -0.00163384-0.03221666j\n",
      "  -0.01974535+0.02550889j  0.03159774-0.0064935j  -0.02820473-0.0156549j\n",
      "   0.0112034 +0.03025007j  0.0112034 -0.03025007j -0.02820473+0.0156549j\n",
      "   0.03159774+0.0064935j  -0.01974535-0.02550889j -0.00163384+0.03221666j\n",
      "   0.02222474-0.02338041j -0.03209256+0.00326349j  0.02647624+0.01842801j\n",
      "  -0.00808557-0.03122829j -0.01420626+0.02896144j  0.0296438 -0.01272116j\n",
      "  -0.03077869-0.00965687j  0.01706336+0.02737562j  0.00488477-0.03188607j\n",
      "  -0.02447607+0.02101202j]\n",
      " [ 0.03225806+0.j         -0.01974535-0.02550889j -0.00808557+0.03122829j\n",
      "   0.0296438 -0.01272116j -0.02820473-0.0156549j   0.00488477+0.03188607j\n",
      "   0.02222474-0.02338041j -0.03209256-0.00326349j  0.01706336+0.02737562j\n",
      "   0.0112034 -0.03025007j -0.03077869+0.00965687j  0.02647624+0.01842801j\n",
      "  -0.00163384-0.03221666j -0.02447607+0.02101202j  0.03159774+0.0064935j\n",
      "  -0.01420626-0.02896144j -0.01420626+0.02896144j  0.03159774-0.0064935j\n",
      "  -0.02447607-0.02101202j -0.00163384+0.03221666j  0.02647624-0.01842801j\n",
      "  -0.03077869-0.00965687j  0.0112034 +0.03025007j  0.01706336-0.02737562j\n",
      "  -0.03209256+0.00326349j  0.02222474+0.02338041j  0.00488477-0.03188607j\n",
      "  -0.02820473+0.0156549j   0.0296438 +0.01272116j -0.00808557-0.03122829j\n",
      "  -0.01974535+0.02550889j]\n",
      " [ 0.03225806+0.j         -0.01420626-0.02896144j -0.01974535+0.02550889j\n",
      "   0.03159774+0.0064935j  -0.00808557-0.03122829j -0.02447607+0.02101202j\n",
      "   0.0296438 +0.01272116j -0.00163384-0.03221666j -0.02820473+0.0156549j\n",
      "   0.02647624+0.01842801j  0.00488477-0.03188607j -0.03077869+0.00965687j\n",
      "   0.02222474+0.02338041j  0.0112034 -0.03025007j -0.03209256+0.00326349j\n",
      "   0.01706336+0.02737562j  0.01706336-0.02737562j -0.03209256-0.00326349j\n",
      "   0.0112034 +0.03025007j  0.02222474-0.02338041j -0.03077869-0.00965687j\n",
      "   0.00488477+0.03188607j  0.02647624-0.01842801j -0.02820473-0.0156549j\n",
      "  -0.00163384+0.03221666j  0.0296438 -0.01272116j -0.02447607-0.02101202j\n",
      "  -0.00808557+0.03122829j  0.03159774-0.0064935j  -0.01974535-0.02550889j\n",
      "  -0.01420626+0.02896144j]\n",
      " [ 0.03225806+0.j         -0.00808557-0.03122829j -0.02820473+0.0156549j\n",
      "   0.02222474+0.02338041j  0.01706336-0.02737562j -0.03077869-0.00965687j\n",
      "  -0.00163384+0.03221666j  0.03159774-0.0064935j  -0.01420626-0.02896144j\n",
      "  -0.02447607+0.02101202j  0.02647624+0.01842801j  0.0112034 -0.03025007j\n",
      "  -0.03209256-0.00326349j  0.00488477+0.03188607j  0.0296438 -0.01272116j\n",
      "  -0.01974535-0.02550889j -0.01974535+0.02550889j  0.0296438 +0.01272116j\n",
      "   0.00488477-0.03188607j -0.03209256+0.00326349j  0.0112034 +0.03025007j\n",
      "   0.02647624-0.01842801j -0.02447607-0.02101202j -0.01420626+0.02896144j\n",
      "   0.03159774+0.0064935j  -0.00163384-0.03221666j -0.03077869+0.00965687j\n",
      "   0.01706336+0.02737562j  0.02222474-0.02338041j -0.02820473-0.0156549j\n",
      "  -0.00808557+0.03122829j]\n",
      " [ 0.03225806+0.j         -0.00163384-0.03221666j -0.03209256+0.00326349j\n",
      "   0.00488477+0.03188607j  0.03159774-0.0064935j  -0.00808557-0.03122829j\n",
      "  -0.03077869+0.00965687j  0.0112034 +0.03025007j  0.0296438 -0.01272116j\n",
      "  -0.01420626-0.02896144j -0.02820473+0.0156549j   0.01706336+0.02737562j\n",
      "   0.02647624-0.01842801j -0.01974535-0.02550889j -0.02447607+0.02101202j\n",
      "   0.02222474+0.02338041j  0.02222474-0.02338041j -0.02447607-0.02101202j\n",
      "  -0.01974535+0.02550889j  0.02647624+0.01842801j  0.01706336-0.02737562j\n",
      "  -0.02820473-0.0156549j  -0.01420626+0.02896144j  0.0296438 +0.01272116j\n",
      "   0.0112034 -0.03025007j -0.03077869-0.00965687j -0.00808557+0.03122829j\n",
      "   0.03159774+0.0064935j   0.00488477-0.03188607j -0.03209256-0.00326349j\n",
      "  -0.00163384+0.03221666j]\n",
      " [ 0.03225806+0.j          0.00488477-0.03188607j -0.03077869-0.00965687j\n",
      "  -0.01420626+0.02896144j  0.02647624+0.01842801j  0.02222474-0.02338041j\n",
      "  -0.01974535-0.02550889j -0.02820473+0.0156549j   0.0112034 +0.03025007j\n",
      "   0.03159774-0.0064935j  -0.00163384-0.03221666j -0.03209256-0.00326349j\n",
      "  -0.00808557+0.03122829j  0.0296438 +0.01272116j  0.01706336-0.02737562j\n",
      "  -0.02447607-0.02101202j -0.02447607+0.02101202j  0.01706336+0.02737562j\n",
      "   0.0296438 -0.01272116j -0.00808557-0.03122829j -0.03209256+0.00326349j\n",
      "  -0.00163384+0.03221666j  0.03159774+0.0064935j   0.0112034 -0.03025007j\n",
      "  -0.02820473-0.0156549j  -0.01974535+0.02550889j  0.02222474+0.02338041j\n",
      "   0.02647624-0.01842801j -0.01420626-0.02896144j -0.03077869+0.00965687j\n",
      "   0.00488477+0.03188607j]\n",
      " [ 0.03225806+0.j          0.0112034 -0.03025007j -0.02447607-0.02101202j\n",
      "  -0.02820473+0.0156549j   0.00488477+0.03188607j  0.03159774+0.0064935j\n",
      "   0.01706336-0.02737562j -0.01974535-0.02550889j -0.03077869+0.00965687j\n",
      "  -0.00163384+0.03221666j  0.0296438 +0.01272116j  0.02222474-0.02338041j\n",
      "  -0.01420626-0.02896144j -0.03209256+0.00326349j -0.00808557+0.03122829j\n",
      "   0.02647624+0.01842801j  0.02647624-0.01842801j -0.00808557-0.03122829j\n",
      "  -0.03209256-0.00326349j -0.01420626+0.02896144j  0.02222474+0.02338041j\n",
      "   0.0296438 -0.01272116j -0.00163384-0.03221666j -0.03077869-0.00965687j\n",
      "  -0.01974535+0.02550889j  0.01706336+0.02737562j  0.03159774-0.0064935j\n",
      "   0.00488477-0.03188607j -0.02820473-0.0156549j  -0.02447607+0.02101202j\n",
      "   0.0112034 +0.03025007j]\n",
      " [ 0.03225806+0.j          0.01706336-0.02737562j -0.01420626-0.02896144j\n",
      "  -0.03209256-0.00326349j -0.01974535+0.02550889j  0.0112034 +0.03025007j\n",
      "   0.03159774+0.0064935j   0.02222474-0.02338041j -0.00808557-0.03122829j\n",
      "  -0.03077869-0.00965687j -0.02447607+0.02101202j  0.00488477+0.03188607j\n",
      "   0.0296438 +0.01272116j  0.02647624-0.01842801j -0.00163384-0.03221666j\n",
      "  -0.02820473-0.0156549j  -0.02820473+0.0156549j  -0.00163384+0.03221666j\n",
      "   0.02647624+0.01842801j  0.0296438 -0.01272116j  0.00488477-0.03188607j\n",
      "  -0.02447607-0.02101202j -0.03077869+0.00965687j -0.00808557+0.03122829j\n",
      "   0.02222474+0.02338041j  0.03159774-0.0064935j   0.0112034 -0.03025007j\n",
      "  -0.01974535-0.02550889j -0.03209256+0.00326349j -0.01420626+0.02896144j\n",
      "   0.01706336+0.02737562j]\n",
      " [ 0.03225806+0.j          0.02222474-0.02338041j -0.00163384-0.03221666j\n",
      "  -0.02447607-0.02101202j -0.03209256+0.00326349j -0.01974535+0.02550889j\n",
      "   0.00488477+0.03188607j  0.02647624+0.01842801j  0.03159774-0.0064935j\n",
      "   0.01706336-0.02737562j -0.00808557-0.03122829j -0.02820473-0.0156549j\n",
      "  -0.03077869+0.00965687j -0.01420626+0.02896144j  0.0112034 +0.03025007j\n",
      "   0.0296438 +0.01272116j  0.0296438 -0.01272116j  0.0112034 -0.03025007j\n",
      "  -0.01420626-0.02896144j -0.03077869-0.00965687j -0.02820473+0.0156549j\n",
      "  -0.00808557+0.03122829j  0.01706336+0.02737562j  0.03159774+0.0064935j\n",
      "   0.02647624-0.01842801j  0.00488477-0.03188607j -0.01974535-0.02550889j\n",
      "  -0.03209256-0.00326349j -0.02447607+0.02101202j -0.00163384+0.03221666j\n",
      "   0.02222474+0.02338041j]\n",
      " [ 0.03225806+0.j          0.02647624-0.01842801j  0.0112034 -0.03025007j\n",
      "  -0.00808557-0.03122829j -0.02447607-0.02101202j -0.03209256-0.00326349j\n",
      "  -0.02820473+0.0156549j  -0.01420626+0.02896144j  0.00488477+0.03188607j\n",
      "   0.02222474+0.02338041j  0.03159774+0.0064935j   0.0296438 -0.01272116j\n",
      "   0.01706336-0.02737562j -0.00163384-0.03221666j -0.01974535-0.02550889j\n",
      "  -0.03077869-0.00965687j -0.03077869+0.00965687j -0.01974535+0.02550889j\n",
      "  -0.00163384+0.03221666j  0.01706336+0.02737562j  0.0296438 +0.01272116j\n",
      "   0.03159774-0.0064935j   0.02222474-0.02338041j  0.00488477-0.03188607j\n",
      "  -0.01420626-0.02896144j -0.02820473-0.0156549j  -0.03209256+0.00326349j\n",
      "  -0.02447607+0.02101202j -0.00808557+0.03122829j  0.0112034 +0.03025007j\n",
      "   0.02647624+0.01842801j]\n",
      " [ 0.03225806+0.j          0.0296438 -0.01272116j  0.02222474-0.02338041j\n",
      "   0.0112034 -0.03025007j -0.00163384-0.03221666j -0.01420626-0.02896144j\n",
      "  -0.02447607-0.02101202j -0.03077869-0.00965687j -0.03209256+0.00326349j\n",
      "  -0.02820473+0.0156549j  -0.01974535+0.02550889j -0.00808557+0.03122829j\n",
      "   0.00488477+0.03188607j  0.01706336+0.02737562j  0.02647624+0.01842801j\n",
      "   0.03159774+0.0064935j   0.03159774-0.0064935j   0.02647624-0.01842801j\n",
      "   0.01706336-0.02737562j  0.00488477-0.03188607j -0.00808557-0.03122829j\n",
      "  -0.01974535-0.02550889j -0.02820473-0.0156549j  -0.03209256-0.00326349j\n",
      "  -0.03077869+0.00965687j -0.02447607+0.02101202j -0.01420626+0.02896144j\n",
      "  -0.00163384+0.03221666j  0.0112034 +0.03025007j  0.02222474+0.02338041j\n",
      "   0.0296438 +0.01272116j]\n",
      " [ 0.03225806+0.j          0.03159774-0.0064935j   0.0296438 -0.01272116j\n",
      "   0.02647624-0.01842801j  0.02222474-0.02338041j  0.01706336-0.02737562j\n",
      "   0.0112034 -0.03025007j  0.00488477-0.03188607j -0.00163384-0.03221666j\n",
      "  -0.00808557-0.03122829j -0.01420626-0.02896144j -0.01974535-0.02550889j\n",
      "  -0.02447607-0.02101202j -0.02820473-0.0156549j  -0.03077869-0.00965687j\n",
      "  -0.03209256-0.00326349j -0.03209256+0.00326349j -0.03077869+0.00965687j\n",
      "  -0.02820473+0.0156549j  -0.02447607+0.02101202j -0.01974535+0.02550889j\n",
      "  -0.01420626+0.02896144j -0.00808557+0.03122829j -0.00163384+0.03221666j\n",
      "   0.00488477+0.03188607j  0.0112034 +0.03025007j  0.01706336+0.02737562j\n",
      "   0.02222474+0.02338041j  0.02647624+0.01842801j  0.0296438 +0.01272116j\n",
      "   0.03159774+0.0064935j ]]\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "source": [
    "H_star = np.transpose(np.conjugate(H))\n",
    "y = np.array([x(n) for n in range(N)])\n",
    "print(y)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[ 0.00000000e+00  5.87785252e-01  9.51056516e-01  9.51056516e-01\n",
      "  5.87785252e-01  1.22464680e-16 -5.87785252e-01 -9.51056516e-01\n",
      " -9.51056516e-01 -5.87785252e-01 -2.44929360e-16  5.87785252e-01\n",
      "  9.51056516e-01  9.51056516e-01  5.87785252e-01  3.67394040e-16\n",
      " -5.87785252e-01 -9.51056516e-01 -9.51056516e-01 -5.87785252e-01\n",
      " -4.89858720e-16  5.87785252e-01  9.51056516e-01  9.51056516e-01\n",
      "  5.87785252e-01  6.12323400e-16 -5.87785252e-01 -9.51056516e-01\n",
      " -9.51056516e-01 -5.87785252e-01 -7.34788079e-16]\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "source": [
    "theta_est = N * np.dot(H_star, y)\n",
    "print(theta_est)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[ 1.20116332e-15 +0.j          3.52817744e-02 -0.34695401j\n",
      "  2.16641118e-01 -1.05418789j  4.48444570e+00-14.29296181j\n",
      " -7.61434999e-01 +1.77435337j -4.94313619e-01 +0.89058251j\n",
      " -4.15458729e-01 +0.59690584j -3.79247580e-01 +0.44177055j\n",
      " -3.59183665e-01 +0.34142953j -3.46860552e-01 +0.26849005j\n",
      " -3.38816587e-01 +0.21118599j -3.33388502e-01 +0.16353487j\n",
      " -3.29693996e-01 +0.12210525j -3.27235688e-01 +0.08472719j\n",
      " -3.25726729e-01 +0.0498995j  -3.25007945e-01 +0.01648254j\n",
      " -3.25007945e-01 -0.01648254j -3.25726729e-01 -0.0498995j\n",
      " -3.27235688e-01 -0.08472719j -3.29693996e-01 -0.12210525j\n",
      " -3.33388502e-01 -0.16353487j -3.38816587e-01 -0.21118599j\n",
      " -3.46860552e-01 -0.26849005j -3.59183665e-01 -0.34142953j\n",
      " -3.79247580e-01 -0.44177055j -4.15458729e-01 -0.59690584j\n",
      " -4.94313619e-01 -0.89058251j -7.61434999e-01 -1.77435337j\n",
      "  4.48444570e+00+14.29296181j  2.16641118e-01 +1.05418789j\n",
      "  3.52817744e-02 +0.34695401j]\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "source": [
    "import scipy as sci\n",
    "\n",
    "theta_est2 = sci.fft(y)\n",
    "print(theta_est2)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[ 9.99200722e-16 +0.j          3.52817744e-02 -0.34695401j\n",
      "  2.16641118e-01 -1.05418789j  4.48444570e+00-14.29296181j\n",
      " -7.61434999e-01 +1.77435337j -4.94313619e-01 +0.89058251j\n",
      " -4.15458729e-01 +0.59690584j -3.79247580e-01 +0.44177055j\n",
      " -3.59183665e-01 +0.34142953j -3.46860552e-01 +0.26849005j\n",
      " -3.38816587e-01 +0.21118599j -3.33388502e-01 +0.16353487j\n",
      " -3.29693996e-01 +0.12210525j -3.27235688e-01 +0.08472719j\n",
      " -3.25726729e-01 +0.0498995j  -3.25007945e-01 +0.01648254j\n",
      " -3.25007945e-01 -0.01648254j -3.25726729e-01 -0.0498995j\n",
      " -3.27235688e-01 -0.08472719j -3.29693996e-01 -0.12210525j\n",
      " -3.33388502e-01 -0.16353487j -3.38816587e-01 -0.21118599j\n",
      " -3.46860552e-01 -0.26849005j -3.59183665e-01 -0.34142953j\n",
      " -3.79247580e-01 -0.44177055j -4.15458729e-01 -0.59690584j\n",
      " -4.94313619e-01 -0.89058251j -7.61434999e-01 -1.77435337j\n",
      "  4.48444570e+00+14.29296181j  2.16641118e-01 +1.05418789j\n",
      "  3.52817744e-02 +0.34695401j]\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "source": [
    "x_data = np.linspace(0, N, N)\n",
    "plt.plot(x_data, theta_est2 - theta_est, label=\"fft(y) - theta\")\n",
    "plt.savefig(\"./q6_figure.png\", dpi=300)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "/home/leitianjian/.local/lib/python3.6/site-packages/numpy/core/_asarray.py:83: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  return array(a, dtype, copy=False, order=order)\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "source": [],
   "outputs": [],
   "metadata": {}
  }
 ],
 "metadata": {
  "orig_nbformat": 4,
  "language_info": {
   "name": "python",
   "version": "3.6.9",
   "mimetype": "text/x-python",
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "pygments_lexer": "ipython3",
   "nbconvert_exporter": "python",
   "file_extension": ".py"
  },
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3.6.9 64-bit"
  },
  "interpreter": {
   "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}